package com.songlanyun.modules.user.exception;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.songlanyun.common.drive.IntegerEnum;

import java.util.Objects;

public enum UserException implements IntegerEnum<Integer> {

    NEW_PASSWORD_NOT_NULL(60001, "新密码不为能空"),
    USERNAME_NOT_REPETITION(60002, "用户名不能重复"),
    ADMIN_NOT_DEL(60003, "系统管理员不能删除"),
    CURRENT_USER_NOT_DEL(60004, "当前用户不能删除"),
    ORIGINAL_PASSWORD_ERROR(60005, "原密码不正确"),
    ADMIN_OPERATION(60006, "平台管理员才能操作"),
    USER_LOCK(60007, "账号已被锁定,请联系管理员"),
    DATA_EXCEPTION(60008, "数据异常,不能操作"),
    USER_NOT_EXISTS(60009, "管理员不存在"),
    MOBILE_NOT_REGISTERED_FOR_WECHAT(60009, "手机号未注册，请先注册"),
    SHOP_EXCEPTION(60010, "商家用户账号异常"),
    SYS_ROLE_NOT_DEL(60011, "系统角色不能删除"),
    ADMIN_ERROR(60012, "系统错误，请联系开发人员"),
    ASSIGNED_ADMINISTRATOR(60013, "该用户已分配管理员账号"),
    ALREADY_RELEVANCE_SHOP(60014, "该用户已分配商家主账号，不能删除"),
    SYS_ROLE_NOT_UPDATE(60015, "系统用户的角色不能修改"),
    MOBILE_NOT_REPETITION(600016, "手机号不能重复"),
    USER_INFO_NOT_EXIST(600017, "用户信息不能为空"),
    USER_ROLE_PTADMIN_EXIST(600018, "该系统角色用户已存在，不能再次添加"),
    USER_ROLE_PTADMIN_UPDATE(600019, "不能修改为系统角色"),
    USER_ROLE_NOT_UPDATE(600020, "已分配系统角色的用户，不能修改角色"),
    ALREADY_CREATE_USER(60021, "该用户已创建管理员账号，请先删除子管理员账号"),
    MOBILE_INCORRECTNESS(60022, "原手机号不正确"),
    PASSWORD_INCORRECTNESS(60023, "原密码不正确"),
    USER_VERIFIED(60024, "实名认证身份不匹配， 请重新认证"),
    USER_EXIST_VERIFIED(60025, "您已实名认证"),
    USER_NOT_EXIST_VERIFIED(60026, "未实名认证"),
    AREA_AGENT_ASSIGNED_ADMINISTRATOR(60027, "该区域代理已分配管理员账号"),
    USER_CARD_NOT_EXISTS(60028, "您的快捷银行卡不存在"),
    USER_CARD_VIP_CODE_NEED(60029, "信用卡背面签名条末三位必填"),
    USER_CARD_EXPIRATION_NEED(60030, "信用卡有效期4位必填"),
    ;


    private Integer code;

    private String msg;

    UserException(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }


    @Override
    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    @JsonCreator
    public static UserException getByCode(int code) {
        for (UserException value : UserException.values()) {
            if (Objects.equals(code, value.getCode())) {
                return value;
            }
        }
        return null;
    }
}
